import * as vscode from 'vscode';
import {dedent} from "../../../utils";

// documentation中使用了代码块，代码块中写的事makedown格式，首行不能为空
let uiModelItems = [
    {
        "label": "UIModel_Create",
        "insertText": dedent`
        GUI:UIModel_Create(\${1:parent}, \${2:ID}, \${3:x}, \${4:y}, \${5:sex}, \${6:feature}, \${7:scale}, \${8:useStaticScale}, \${9:job}, \${10:ext_param})
        `,
        "documentation": dedent`# 创建人物模型
        [在线文档](http://engine-doc.996m2.com/web/#/22/2178)

        | 参数           | 必选 | 类型    | 注释                                             |
        | :------------- | :--- | :------ | :----------------------------------------------- |
        | parent         | 是   | obj     | 父节点对象                                       |
        | ID             | 是   | string  | 唯一ID                                           |
        | x              | 是   | int     | 位置 横坐标                                      |
        | y              | 是   | int     | 位置 纵坐标                                      |
        | sex            | 是   | int     | 0 男性 1 女性                                    |
        | feature        | 是   | table   | 模型属性                                         |
        | scale          | 否   | int     | 缩放比例(0-1)                                    |
        | useStaticScale | 否   | boolean | 是否使用game_data配置staticSacle数据, 默认忽略   |
        | job            | 否   | int     | 职业id 012 战法道等新增职业 [3.40.5版本新增字段] |
        | ext_param      | 否   | table   | 额外参数列表 [3.40.8版本新增字段]                |

        - 示例代码

        \`\`\`
        -- feature 使用方法
        ！！除特效ID外 其余装备ID传入对应装备数据的Looks参数.
        local feature= {}
        feature.clothID                  -- 衣服
        feature.weaponID                 -- 武器id
        feature.headID                   -- 头盔id
        feature.headEffectID             -- 头盔特效id
        feature.weaponEffectID           -- 武器特效id
        feature.clothEffectID            -- 衣服特效id
        feature.capID                    -- 斗笠id
        feature.shieldID                 -- 盾牌id
        feature.shieldEffectID           -- 盾牌特效id
        feature.tDressID                 -- 时装id
        feature.tDressEffectID           -- 时装特效id
        feature.tWeaponID
        feature.tWeaponEffectID
        feature.capEffectID              -- 斗笠特效id
        feature.veilID                   -- 面巾id
        feature.veilEffectID             -- 面巾特效id
        feature.notShowMold              -- 是否为裸模
        feature.notShowHair              -- 是否显示头发
        local UIModel = GUI:UIModel_Create(parent, "UIMODEL", 0, 0, 0, feature, nil)
        \`\`\`
        `
    }
]



export function getCompletionItems(): vscode.CompletionItem[] {


    const completionItems: vscode.CompletionItem[] = [];
    uiModelItems.forEach((item: any) => {
        completionItems.push(createFunctionCompletionItem(item.label, item.insertText, item.documentation));
    });
    return completionItems;
}

function createFunctionCompletionItem(label: string, insertText: string, documentation?: string): vscode.CompletionItem {
    const item = new vscode.CompletionItem(label, vscode.CompletionItemKind.Function);
    item.insertText = new vscode.SnippetString(insertText);
    if (documentation) {
        item.documentation = new vscode.MarkdownString(documentation);
    }
    return item;
}
